package com.chenjian.designpattern.template;

/**
 * 模板模式
 * <p>
 * 抽象模板类,控制执行过程，抽象具体实现
 *
 * @author TC2952
 */
public abstract class AbstractTemplate {

    protected String desc;

    /**
     * 执行过程一
     */
    private void doProcess1() {
        System.out.println("执行步骤一");
    }

    /**
     * 执行过程二
     * <p>
     * 抽象过程，需要具体实现
     */
    protected abstract void doProcess2();

    /**
     * 执行过程三
     */
    private void doProcess3() {
        System.out.println("执行步骤三");
    }

    /**
     * 编排执行过程
     */
    protected final void process() {
        doProcess1();
        doProcess2();
        doProcess3();
    }
}
